extends Card

# 示例卡牌：使用regeneration_effect模板并修改数值

func _ready() -> void:
	# 示例：如果这个卡牌使用了regeneration_effect模板
	if scheduled_effect and scheduled_effect.id == "regeneration":
		print("🌱 检测到再生效果模板，准备修改数值")
		_modify_regeneration_values()

# 修改再生效果的数值
func _modify_regeneration_values() -> void:
	if not scheduled_effect:
		return
	
	# 遍历所有stat_modifications
	for stat_mod in scheduled_effect.stat_modifications:
		if stat_mod is StatModification:
			# 找到再生效果中的治疗修改
			if stat_mod.stat_name == "health" and stat_mod.modification_type == StatModification.ModificationType.ADD:
				print("🔧 原始再生效果治疗量: %f" % stat_mod.value)
				
				# 示例1：直接修改数值
				stat_mod.value = 10.0  # 从5改为10
				print("🔧 修改后再生效果治疗量: %f" % stat_mod.value)
				
				# 示例2：根据卡牌等级修改
				# 假设卡牌有等级属性
				var card_level = 2  # 可以从某个地方获取
				stat_mod.value = 5.0 + (card_level * 2.0)  # 基础5 + 每级+2
				print("🔧 根据等级调整后治疗量: %f (等级: %d)" % [stat_mod.value, card_level])

# 根据修改器动态调整数值
func _apply_dynamic_modifications(modifiers: ModifierHandler) -> void:
	if not scheduled_effect:
		return
	
	# 获取玩家的治疗加成修改器（假设存在）
	var heal_modifier = modifiers.get_modifier(Modifier.Type.DMG_DEALT)  # 使用伤害修改器作为示例
	if heal_modifier:
		var heal_bonus = heal_modifier.get_modified_value(0) - 0
		
		# 调整所有治疗相关的修改
		for stat_mod in scheduled_effect.stat_modifications:
			if stat_mod is StatModification:
				if stat_mod.stat_name == "health" and stat_mod.modification_type == StatModification.ModificationType.ADD:
					var base_value = 5.0  # 基础治疗量
					stat_mod.value = base_value + heal_bonus
					print("🔧 根据治疗加成调整: %f (基础: %f, 加成: %d)" % [stat_mod.value, base_value, heal_bonus])

func get_default_tooltip() -> String:
	# 动态生成提示文本
	if scheduled_effect:
		for stat_mod in scheduled_effect.stat_modifications:
			if stat_mod is StatModification and stat_mod.stat_name == "health":
				return "每回合恢复 %d 点生命值" % int(stat_mod.value)
	
	return tooltip_text

func get_updated_tooltip(player_modifiers: ModifierHandler, _enemy_modifiers: ModifierHandler) -> String:
	# 根据修改器更新提示文本
	_apply_dynamic_modifications(player_modifiers)
	return get_default_tooltip()

func apply_effects(targets: Array[Node], modifiers: ModifierHandler) -> void:
	# 在应用效果前调整数值
	_apply_dynamic_modifications(modifiers)
	
	# 应用调度效果
	if scheduled_effect and targets.size() > 0:
		var target_node = targets[0]
		if target_node and target_node.is_inside_tree():
			var battle = target_node.get_tree().get_first_node_in_group("battle")
			if battle and battle.resource_scheduler:
				# 复制调度效果以避免修改原始模板
				var effect_instance = scheduled_effect.duplicate()
				battle.resource_scheduler.add_scheduled_effect(effect_instance)
				print("🌱 已应用修改后的再生效果")
	
	super.apply_effects(targets, modifiers) 
